package com.base.cn.platform.os.common.mybatis.utils;

import com.base.cn.platform.os.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * MyBatisSql
 *
 * @author s.li
 * @date 2019/04/11
 */
@Slf4j
public class MyBatisSql {
    /**
     * 运行期 sql
     */
    private String sql;

    /**
     * 参数 数组
     */
    private Object[] parameters;

    public void setSql(String sql) {
        this.sql = sql;
    }

    public String getSql() {
        return this.toString();
    }

    public void setParameters(Object[] parameters) {
        this.parameters = parameters;
    }

    public Object[] getParameters() {
        return parameters;
    }

    @Override
    public String toString() {
        if (parameters == null || sql == null) {
            return "";
        }
        List<Object> parametersArray = Arrays.asList(parameters);
        List<Object> list = new ArrayList<>(parametersArray);
        while (sql.indexOf("?") != -1 && list.size() > 0 && parameters.length > 0) {
            if(StringUtils.isNotEmpty(sql)){
                if(list.get(0) ==null){
                    sql = sql.replaceFirst("\\?", "''");
                }else{
                    sql = sql.replaceFirst("\\?", list.get(0).toString());
                }
                list.remove(0);
            }
        }
        return sql.replaceAll("(\r?\n(\\s*\r?\n)+)", "\r\n");
    }
}